﻿using Epm.AppLogic.Framework;
using msBsc.Xsd.DataTds;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Xml;
using System.Xml.Linq;
using System.Linq;
using System.Web.Configuration;

namespace msBsc.AppLogic.DataAlc
{
    public class CBizCommonOption : CustBizObject
    {
        private CDmDjkCommonOption m_CDmDjkCommonOption = new CDmDjkCommonOption();
        private CDmDjkCommonOption oDmDjkCommonOption
        {
            get { return m_CDmDjkCommonOption; }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        public CBizCommonOption()
            : base()
        {
            this.DataObj = new CDbAccess();
            this.DataObj.Init(this.m_CDmDjkCommonOption.DJK_COMMON_OPTION);
            this.TableName = this.DataObj.TableName;
            this.DataObj.KeyField = this.DataObj.Fields["ID"];
        }

        /// <summary>
        /// 新增记录前的处理
        /// </summary>
        /// <param name="drw">新增数据行</param>
        /// <returns>true/false</returns>
        /// <remarks>
        /// 生成ID值
        /// </remarks>
        protected override bool BeforeRowAdded(DataRow drw)
        {
            if (drw[this.KeyFieldName].ToString().Length < 10)
            {
                drw[this.KeyFieldName] = this.DataObj.NewID();
            }
            return true;
        }

        /// <summary>
        /// 记录修改前检验
        /// </summary>
        /// <param name="drw">当前记录</param>
        /// <returns>>校验合法，返回值为true,否则返回false</returns>
        /// <remarks>
        /// ID不允许修改,并把此修改操作记录到BSE_MODIFY_HISTORY表中
        /// </remarks>
        protected override bool BeforeRowModified(DataRow drw)
        {
            //ID不容许修改
            if (drw[this.KeyFieldName].ToString() != drw[this.KeyFieldName, DataRowVersion.Original].ToString())
            {
                Exception e = new Exception(this.TableName + "表的主键" + this.KeyFieldName + "字段不允许被修改");
                throw e;
            }
            return true;
        }
        protected override bool BeforeRowDeletedR(DataRow drw)
        {
            //using (msBsc.AppLogic.DataAlc.CBizShpPageColumn objtem = new CBizShpPageColumn())
            //{
            //    DataSet ds = objtem.SelectByPageNo(this.GetRowStr(drw, KeyFieldName));
            //    for (int i = ds.Tables[0].Rows.Count - 1; i >= 0; i--)
            //    {
            //        ds.Tables[0].Rows[i].Delete();
            //    }
            //    objtem.Update(ds);
            //} 
            return true;
        }

        protected override bool AfterRowAdded(DataRow drw)
        {
            return true;
        }

        protected override bool AfterRowModified(DataRow drw)
        {
            return true;
        }

        protected override bool AfterRowDeletedR(DataRow drw)
        {
            return true;
        }


        /// <summary>
        /// 根据类型获取公共类型信息
        /// </summary>
        /// <param name="funType">类型代码(为空时查询全部)</param>
        /// <returns></returns>
        /// Author:刘魏
        /// Creation date:2015-8-31 10:50
        public DataSet GetOptionInfoByFunType(string funType)
        {
            DataSet ds = new DataSet();

            string sqlStr = @"SELECT * 
                            FROM " + this.TableName + @" 
                            WHERE OPTION_IS_VALID = 1 
                                AND OPTION_IS_SHOW = 1 
                                AND OPTION_IS_DELETED = 0 
                                AND (@funtype = '' OR OPTION_FUN_CODE = @funtype)";

            CDbParmCollection parmCollection = new CDbParmCollection();
            parmCollection.Add(new CDbParm("funtype", ParameterDirection.Input, EDbType.String, 16, funType));

            ds = this.DataObj.QueryBySQL(sqlStr, parmCollection);

            return ds;
        }

        /// <summary>
        /// 添加公共类型信息
        /// </summary>
        /// <param name="optionFCode">父级类型Code</param>
        /// <param name="optionName">类型名称</param>
        /// <param name="optionFunType">类型代码</param>
        /// <param name="optionUrl">类型链接地址</param>
        /// <param name="isValid">是否生效</param>
        /// <param name="isShow">是否显示</param>
        /// <returns>是否添加成功</returns>
        /// Author:刘魏
        /// Creation date:2015-8-31 10:55
        public bool AddOptionInfo(string optionFCode, string optionName, string optionFunType, string optionUrl, int isValid, int isShow)
        {
            if (string.IsNullOrWhiteSpace(optionName)
                || string.IsNullOrWhiteSpace(optionFunType))
            {
                return false;
            }


            DataSet ds = new CDmDjkCommonOption();

            DataRow dr = ds.Tables[0].NewRow();
            dr["ID"] = this.DataObj.NewID();
            dr["OPTION_FCODE"] = string.IsNullOrWhiteSpace(optionFCode) ? "0" : optionFCode;
            dr["OPTION_CODE"] = msBsc.SvRef.ApplicationConst.Const.GetNewSerialNo("OPTION_CODE", "", 4);
            dr["OPTION_NAME"] = optionName;
            dr["OPTION_FUN_CODE"] = optionFunType;
            dr["OPTION_URL"] = optionUrl;
            dr["OPTION_IS_VALID"] = isValid;
            dr["OPTION_IS_SHOW"] = isShow;
            dr["OPTION_IS_DELETED"] = 0;
            dr["INIT_USR"] = msBsc.SvRef.UserInfo.Operator;
            dr["INTI_DT"] = this.dtCurrDateTime;

            ds.Tables[0].Rows.Add(dr);

            this.Update(ds);

            return true;
        }
    }
}
